package modelo.servicio;

import java.util.List;
import modelo.bd.dao.PerfilDAO;
import modelo.bd.excepcion.DAOException;
import modelo.dominio.Perfil;
import modelo.io.ManejadorArchivos;

public class Perfiles {
    private static Perfiles instancia;
    private PerfilDAO dao;

    private Perfiles() {
        this.dao = new PerfilDAO();
    }

    public static Perfiles instancia() {
        if (instancia == null) {
            instancia = new Perfiles();
        }
        return instancia;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return new CloneNotSupportedException("No se puede clonar Perfiles.");
    }
    
    public void agregar(String clave, String tipo, String descripcion, 
            String descripcionCorta, String usuario) throws DAOException {
    }

    public void editar(String clave, String tipo, String descripcion, 
            String descripcionCorta, String usuario) throws DAOException {
    }

    public void eliminar(String claveUsuario, String clavePerfil) throws DAOException {
    }

    public List<Perfil> todos() throws DAOException {
        return dao.selectAll();
    }
    
    public Perfil porClave(String claveUsuario, String clavePerfil) throws DAOException {
        try {
            List<Perfil> ls = dao.selectWhere("peus_uspe_usuario  = '" + claveUsuario + "'");
            return ls.get(0);
        } catch (Exception e) {
            return null;
        }
    }
    
    public List<Perfil> delUsuario(String claveUsuario) throws DAOException {
        return dao.selectWhere("peus_uspe_usuario  = '" + claveUsuario + "'");
    }
    
    public String accesosMenu(String claveUsuario) {
        String numerosMenu = "";
        try {
            List<Perfil> ls = dao.selectWhere("peus_uspe_usuario  = '" + claveUsuario + "'");
            if (ls != null && !ls.isEmpty()) {
                for (Perfil perfil : ls) {
                    numerosMenu += ManejadorArchivos.instancia().obtenerPropiedad("../conf.properties", perfil.getPermiso()) + ",";
                }
            }
            return numerosMenu;
        } catch (Exception e) {
            return "";
        }
    }
}
